package com.chenjj.scala.lsp

object Main {


  def main(args: Array[String]): Unit = {

    //协变
    val s:AnyRef = "abc"
    //非协变，编译全部通过，并非scala中默认协变
    var objects:List[AnyRef] = List[String]("abc","123")
    for( x<-objects) println(x.toString)


    //协变
    val ss:java.lang.Object = new java.lang.String("abc")
    //非协变 编译不通过
    //var jObjects:java.util.List[Object] = new java.util.ArrayList[java.lang.String]()



    //通过以上可以看出，在语言层面上来说scala里是默认非协变的， 查看scala.List的定义可见  class List [+A]
    //scala提供了更细的语法来控制协变行为，这里是通过[+A]来明确声明List为协变，因此我们的控制粒度细了很多
  }


}
